/**
 * Created by lijtg on 2015/12/23.
 */
var common = {
    hostPath: location.protocol + '//' + location.host
   // + '/deposit'
    + '',
    /*
     * 加载html模板
     * */
    loadTpl: function(id, url, data){
        data = data || {
                host: common.hostPath
            };
        $.ajax({
            type: "GET",
            url: url,
            async: false, //false同步请求
            success: function (html) {
                for(var k in data){
                    var reg = new RegExp('{{' + k + '}}', 'g');
                    html = html.replace(reg, data[k]);
                }
                $('#' + id).html(html);
            }
        });
    },
    /*
     * 加载页面
     * @url 要加载的页面地址
     * @params url参数 {
     *   m: '',//左侧菜单选项
     *   u: '',//要加载的模板页面地址
     *   ...//其他自定义属性
     * }
     *
     * */
    loadPage: function (url, params) {
        url = url || '';
        if(!url) return;
        var arr = [];
        for(var k in params){
            arr.push(k + '=' + params[k]);
        }
        //return url + '?' + encodeURIComponent(arr.join('&'));
        window.location.href = url + '?' + encodeURIComponent(arr.join('&'));
    },

    getPageUrl: function (url, params) {
        url = url || '';
        if(!url) return;
        var arr = [];
        for(var k in params){
            arr.push(k + '=' + params[k]);
        }
        return url + '?' + encodeURIComponent(arr.join('&'));
        //window.location.href = url + '?' + encodeURIComponent(arr.join('&'));
    },

    /*
     *获取url参数，返回json对象
     * */
    getUrlParams: function(){
        var paramsObj = {};
        if(location.search && location.search.substring(1)){
            var url = decodeURIComponent(location.search.substring(1));
            var params = url.split('&');
            for(var i = 0; i < params.length; i++){
                var key = params[i].split('=')[0];
                //var value = params[i].split('=')[1];
                var value = params[i].replace(key + '=', '');
                paramsObj[key] = value;
            }
        }
        return paramsObj;
    },

    /*
     *获取url参数，返回json对象
     * */
    getUrlHashParams: function(){
        var paramsObj = {};
        if(location.hash){
            var p = location.hash.substring(location.hash.indexOf('?') + 1);
            var url = decodeURIComponent(p);
            var params = url.split('&');
            for(var i = 0; i < params.length; i++){
                var key = params[i].split('=')[0];
                var value = params[i].split('=')[1];
                paramsObj[key] = value;
            }
        }
        return paramsObj;
    },
    //获取页面文件名
    getUrlFileName: function(){
        var url=window.location.href;//获取完整URL地址
        var tmp= new Array();//临时变量，用于保存分割字符串
        tmp=url.split("/");//按照"/"分割
        var cc = tmp[tmp.length-1];//获取最后一部分，即文件名和参数
        tmp=cc.split(".");//
        return tmp[0];//返回值
    },
    /*
     *请求失败的统一错误处理
     *
     */
    responseError: function (xhr, errorInfo, errorObj) {
        //alert('请求失败！');
    },
    /*
     *请求成功后的统一处理
     *
     */
    responseFail: function (data) {
        if(data){
            layer.open({
                //title: '提示',
                content: data.errMsg || '',
                skin: 'msg',
                time: 2 //2秒后自动关闭
            });
            return;
        }
        layer.open({
            //title: '提示',
            content: '请求错误',
            skin: 'msg',
            time: 2 //2秒后自动关闭
        });
    },
    alertLayer: function (data) {
        layer.open({
            //title: '提示',
            content: data.errMsg || '',
            skin: 'msg',
            time: data.time || 2, //2秒后自动关闭
        });
    },

    //生成随机数(不包括0)
    randomNumber: function(length){
        length = length || 6;
        var str = (Math.random() + '').substring(2);
        var arrCode = [];
        for(var i = 0; i < str.length; i++){
            if(arrCode.length == length) break;
            if(str[i] != '0'){
                arrCode.push(str[i]);
            }
        }
        return parseInt(arrCode.join(''));
    },

    passwordEyesClick: function (inputId, eyes){
        var input = $('#' + inputId);
        if(input.attr('type') == 'password'){
            input.attr('type', 'text');
            $(eyes).addClass('pwd-eyes-active');
            return;
        }
        input.attr('type', 'password');
        $(eyes).removeClass('pwd-eyes-active');
    },

    checkPwdLength: function (password) {
        var re = {
            success: true,
            msg: ''
        };
        if(password == ""){
            re.success = false;
            re.msg = "密码不能为空";
        }else if (password.length < 6 || password.length > 12){
            re.success = false;
            re.msg = "请输入6到12位密码";
        }

        return re;
    },

    isMobile: function (text){
        var _emp = /^\s*|\s$/g;
        text = text.replace(_emp, "");
        var _d = /^1[3578][01379]\d{8}$/g;
        var _l = /^1[34578][01256]\d{8}$/g;
        var _y = /^(134[012345678]\d{7}|1[34578][012356789]\d{8})$/g;
        if(_d.test(text)){
            return 3;
        }else if (_l.test(text)){
            return 2;
        }else if (_y.test(text)){
            return 1;
        }
        return 0;
    },

    isEmail: function (email){
        var search_str = /^[\w\-\.]+@[\w\-\.]+(\.\w+)+$/;
        var email_val = email;
        if(!search_str.test(email_val)){
            return false;
        }
        return true;
    },

    getBase64Image: function(img) {
        var canvas = document.createElement("canvas");
        canvas.width = img.width;
        canvas.height = img.height;

        var ctx = canvas.getContext("2d");
        ctx.drawImage(img, 0, 0, img.width, img.height);

        var dataURL = canvas.toDataURL("image/png");
        return dataURL;

        // return dataURL.replace("data:image/png;base64,", "");
    },
    //中文校验
    validateChnChar: function(name){
        var reg_chnchar = /[\u4e00-\u9fa5]+$/;
        return reg_chnchar.test(name.trim());
    },
    /*
     * 身份证15位编码规则：dddddd yymmdd xx p
     * dddddd：6位地区编码
     * yymmdd: 出生年(两位年)月日，如：910215
     * xx: 顺序编码，系统产生，无法确定
     * p: 性别，奇数为男，偶数为女
     *
     * 身份证18位编码规则：dddddd yyyymmdd xxx y
     * dddddd：6位地区编码
     * yyyymmdd: 出生年(四位年)月日，如：19910215
     * xxx：顺序编码，系统产生，无法确定，奇数为男，偶数为女
     * y: 校验码，该位数值可通过前17位计算获得
     *
     * 前17位号码加权因子为 Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ]
     * 验证位 Y = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ]
     * 如果验证码恰好是10，为了保证身份证是十八位，那么第十八位将用X来代替
     * 校验位计算公式：Y_P = mod( ∑(Ai×Wi),11 )
     * i为身份证号码1...17 位; Y_P为校验码Y所在校验码数组位置
     */
    validateIDCard: function(idCard){
        //15位和18位身份证号码的正则表达式
        var regIdCard=/^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/;

        //如果通过该验证，说明身份证格式正确，但准确性还需计算
        if(regIdCard.test(idCard)){
            if(idCard.length==18){
                var idCardWi=new Array( 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ); //将前17位加权因子保存在数组里
                var idCardY=new Array( 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ); //这是除以11后，可能产生的11位余数、验证码，也保存成数组
                var idCardWiSum=0; //用来保存前17位各自乖以加权因子后的总和
                for(var i=0;i<17;i++){
                    idCardWiSum+=idCard.substring(i,i+1)*idCardWi[i];
                }

                var idCardMod=idCardWiSum%11;//计算出校验码所在数组的位置
                var idCardLast=idCard.substring(17);//得到最后一位身份证号码

                //如果等于2，则说明校验码是10，身份证号码最后一位应该是X
                if(idCardMod==2){
                    if(idCardLast=="X"||idCardLast=="x"){
                        //alert("恭喜通过验证啦！");
                        return true;
                    }else{
                        //alert("身份证号码错误！");
                        return false;
                    }
                }else{
                    //用计算出的验证码与最后一位身份证号码匹配，如果一致，说明通过，否则是无效的身份证号码
                    if(idCardLast==idCardY[idCardMod]){
                        //alert("恭喜通过验证啦！");
                        return true;
                    }else{
                        //alert("身份证号码错误！");
                        return false;
                    }
                }
            }
        }else{
            //alert("身份证格式不正确!");
            return false;
        }
    },

    //获得cookie中用户id及name 返回json对象
    getCookieByKey: function (name) {
        var paramsObj = {};
        var lu = $.cookie(name);
        lu = decodeURIComponent(lu);
        if (lu) {
            var params = lu.split("&");
            for (var i = 0; i < params.length; i++) {
                var key = params[i].split('=')[0];
                var value = params[i].split('=')[1];
                paramsObj[key] = value;
            }
        }
        return paramsObj;
    },
    clone: function(source, value){
        var result={};
        for (var key in source) {
            result[key] = typeof source[key] === 'object' ? common.clone(source[key]): source[key];
        }
        //修改自定义值
        if(value){
            for (var k in value) {
                result[k] = value[k];
            }
        }

        return result;
    },

// 对Date的扩展，将 Date 转化为指定格式的String
// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符，
// 年(y)可以用 1-4 个占位符，毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
// 例子：
// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
// (new Date()).Format("yyyy-M-d h:m:s.S")      ==> 2006-7-2 8:9:4.18
    dateFormat: function (date, fmt) {
        var o = {
            "M+": date.getMonth() + 1, //月份
            "d+": date.getDate(), //日
            "h+": date.getHours(), //小时
            "m+": date.getMinutes(), //分
            "s+": date.getSeconds(), //秒
            "q+": Math.floor((date.getMonth() + 3) / 3), //季度
            "S": date.getMilliseconds() //毫秒
        };
        if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
        for (var k in o)
            if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
        return fmt;
    },
    /*
     * term = {
     *   Y: 1,
     *   M: 3,
     *   D: 0
     * }
     *
     * */
    getCustomDate: function (startDate, term) {
        startDate = startDate ? startDate : new Date();
        var customDate = startDate;
        if(term){
            if(term.Y){
                customDate.setYear(customDate.getFullYear() + term.Y * 1);
            }
            if(term.M){
                customDate.setMonth(customDate.getMonth() + term.M * 1);
            }
            if(term.D){
                customDate.setDate(customDate.getDate() + term.D * 1);
            }
        }
        customDate = common.dateFormat(customDate, 'yyyyMMdd');
        return customDate;
    },
    datatablesChinese: {
        "sProcessing": "处理中...",
        "sLengthMenu": "显示 _MENU_ 项结果",
        "sZeroRecords": "没有匹配结果",
        "sInfo": "显示第 _START_ 至 _END_ 项结果，共 _TOTAL_ 项",
        "sInfoEmpty": "显示第 0 至 0 项结果，共 0 项",
        "sInfoFiltered": "(由 _MAX_ 项结果过滤)",
        "sInfoPostFix": "",
        "sSearch": "搜索:",
        "sUrl": "",
        "sEmptyTable": "暂无数据",
        "sLoadingRecords": "载入中...",
        "sInfoThousands": ",",
        "oPaginate": {
            "sFirst": "首页",
            "sPrevious": "上页",
            "sNext": "下页",
            "sLast": "末页"
        },
        "oAria": {
            "sSortAscending": ": 以升序排列此列",
            "sSortDescending": ": 以降序排列此列"
        }
    }
};
